package com.ruoyi.houses.domain.dto.request;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.model.Image;
import com.ruoyi.houses.domain.RentHouses;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.List;

/**
 * 房屋信息列表对象 houses
 * 
 * @author ruoyi
 * @date 2024-09-13
 */
@Data
public class HousesReqDTO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 房屋id */
    private Long id;


    /** 城市ID，可能用于关联到城市表 */
    @Excel(name = "城市ID，可能用于关联到城市表")
    private Long cityId;

    /** 小区的ID */
    @Excel(name = "小区的ID")
    private Long communityId;

    /** 小区的名称 */
    @Excel(name = "小区的名称")
    private String communityName;

    /** 楼盘名称 */
    @Excel(name = "楼盘名称")
    private String buildName;

    /** 楼盘ID，可能作为主键或唯一标识符 */
    @Excel(name = "楼盘ID，可能作为主键或唯一标识符")
    private Long buildId;

    /** 负责经纪人id */
    @Excel(name = "负责经纪人id")
    private Long brokerId;

    /** 经纪人联系电话 */
    @Excel(name = "经纪人联系电话")
    private String brokerTel;

    /** 装修类型（如毛坯、精装等） */
    @Excel(name = "装修类型", readConverterExp = "如=毛坯、精装等")
    private String decorateType;

    /** 楼层 */
    @Excel(name = "楼层")
    private Long level;

    /** 户型的id */
    @Excel(name = "户型的id")
    private Long specificationId;

    /** 朝向 */
    @Excel(name = "朝向")
    private String orientation;

    /** 区域ID，可能用于关联到区域表 */
    @Excel(name = "区域ID，可能用于关联到区域表")
    private Long districtId;

    /** 区域名称 */
    @Excel(name = "区域名称")
    private String districtName;

    @Excel(name = "省ID")
    private Long provinceId;


    @Excel(name = "省名称")
    private String provinceName;
    /** 销售状态 */
    @Excel(name = "销售状态")
    private String saleStatus;

    /** 房屋类型 */
    @Excel(name = "房屋类型")
    private Long houseType;

    /** 城市名称，可能与city_id关联 */
    @Excel(name = "城市名称，可能与city_id关联")
    private String cityName;

    /** 总面积，可能包含逗号，需要处理 */
    @Excel(name = "总面积，可能包含逗号，需要处理")
    private BigDecimal totalArea;

    /** 详细地址 */
    @Excel(name = "详细地址")
    private String addressDesc;

    /** 经度 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 纬度 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /**
          租房 房屋详情
    **/
    private RentHouses rentHouses; //房屋详情

    /**
          租房 房屋图片
    **/
    private List<Image> imageList; //房屋图片列表

    /**
          租房 房屋设施ID
    **/
    private List<Integer> facilityId; //房屋设施ID

    //非空校验
    public void check() {
        if (cityId == null) {
            throw new IllegalArgumentException("城市 ID 不能为空");
        }

        if (communityId == null) {
            throw new IllegalArgumentException("小区 ID 不能为空");
        }

        if (brokerId == null) {
            throw new IllegalArgumentException("经纪人 id 不能为空");
        }
        if (totalArea == null) {
            throw new IllegalArgumentException("总面积不能为空");
        }
        if (addressDesc == null) {
            throw new IllegalArgumentException("详细地址不能为空");
        }
//        if (longitude == null) {
//            throw new IllegalArgumentException("经度不能为空");
//        }
//        if (latitude == null) {
//            throw new IllegalArgumentException("纬度不能为空");
//        }
        if (rentHouses == null) {
            throw new IllegalArgumentException("房屋详情不能为空");
        }


        if (imageList == null || imageList.isEmpty()) {
            throw new IllegalArgumentException("房屋图片列表不能为空");
        }
    }

}
